
/****************************************************** 事件回调方法定义 START ******************************************************/

/**
 * Description:			登录连接回调事件通知
 * param[userCode]:		用户ID（字符串），最大长度100字节
 * param[errorCode]:	错误码（数字），参考YunErrorCode.js
 * param[reConnect]: 	重连标记（数字）1：重连  0：非重连
*/
function onYunLoginSystem(userCode, errorCode, reConnect) {
    App.UserCode = userCode;
    console.log("OnYunEvent(LoginSystem), userCode=" + userCode + ", erroCode=" + errorCode + ", reConnect=" + reConnect);
    if (errorCode == 0) {
        var d_no = Yun_GetDeviceCount(1);
        var d_list = [];
        var options = [];
        for (var i = 0;i < d_no;i++) {
            var name = Yun_GetDeviceName(1, i);
            var op = '<option value="' + i + '">' + name + '</option>'
            name && d_list.push(name) && options.push(op);
        }
        $("#userid").html(App.NickName)
        $("#camera-list").append(options.join(''));
        App.CameraList = d_list;
        console.log("#login")
        $("#login").addClass("hide");
        $("#home").removeClass("hide");
        console.log("#home")
    }
}

/**
 * Description:			网络断线回调事件通知
 * param[errorCode]:	错误码（数字）
*/
function onYunDisConnect(errorCode) {
    console.log("OnYunEvent(DisConnect), errorCode=" + errorCode);
}

/**
 * Description:			服务器踢出回调事件通知
 * param[errorCode]:	错误码（数字）
*/
function onYunServerTickout(errorCode) {
    console.log("OnYunEvent(ServerTickout), errorCode=" + errorCode);
}

/**
 * Description:			自己加入(离开)会议结果回调事件通知
 * param[actionCode]: 	会议动作代码（数字），参考YunDefine.js ： YUN_CONFERENCE_ATICONCODE_JOIN 加入会议； YUN_CONFERENCE_ATICONCODE_EXIT 离开会议
 * param[confId:]		会议号（数字）
 * param[errorCode]:	错误码（数字）
*/
function onYunConferenceResult(actionCode, confId, errorCode) {
    if (errorCode == 0 && actionCode == YUN_CONFERENCE_ATICONCODE_JOIN) {
        App.RoomId = confId;
        $("#enter-room").addClass("hide");
        $("#video-area").removeClass("hide");
        App.AudioStatus = true;
        App.VideoStatus = true;
        Yun_OpenCamera(0, 0);
        Yun_OpenMicrophone(0, 0);
        // Yun_SetRecordPath("E:\\yunvideoaudio");
        Yun_ShowVideo(App.UserCode, 0, document.getElementById("LocalVideo"), "LocalObject");
    } else if (errorCode == 0 && actionCode == YUN_CONFERENCE_ATICONCODE_EXIT) {
        $("#video-area").addClass("hide");
        $("#enter-room").removeClass("hide");
    }
    console.log("OnYunEvent(ConferenceResult), actionCode=" + actionCode + ", confId="+ confId + ", errorCode=" + errorCode);
}

/**
 * Description:			其他人加入(离开)会议回调事件通知
 * param[userCode]:		用户ID（字符串），最大长度100字节
 * param[actionCode]: 	会议动作代码（数字），参考YunDefine.js ： YUN_CONFERENCE_ATICONCODE_JOIN 加入会议； YUN_CONFERENCE_ATICONCODE_EXIT 离开会议
 * param[confId]:		会议号（数字）
*/
function onYunConferenceUser(userCode, actionCode, confId) {
    // if (actionCode == YUN_CONFERENCE_ATICONCODE_JOIN) {
    //     Yun_GetRemoteVideoStream(userCode, 0, "1");
    //     Yun_GetRemoteAudioStream(userCode, 0, "1");
    //     Yun_ShowVideo(userCode, 0, document.getElementById("RemoteVideo"), "RemoteObject");
    // }
    console.log("OnYunEvent(ConferenceUser), userCode=" + userCode + ", actionCode=" + actionCode + ", confId=" + confId);
}

/**
 * Description:			录像结果回调事件通知
 * param[userCode]:		用户ID（字符串），最大长度100字节
 * param[errorCode]:	错误码（数字）
 * param[fileName]:		生成的录像全路径（字符串）
 * param[duration]:		生成的录像时长
 * param[fileLength]:	生成的录像文件大小
 * param[flags]:		录像标记（数字）（保留）
 * param[recordParam]:	录像时指定的参数（字符串）
*/
function onYunRecordResult(userCode, errorCode, fileName, duration, fileLength, flags, recordParam) {
    if (errorCode == 0) {
        App.RecordFile = fileName;
        App.append_video(Yun_GetWebServiceUrl(fileName));
    }
    console.log("OnYunEvent(RecordResult), userCode=" + userCode + ", errorCode=" + errorCode + ", fileName=" + fileName + ", duration=" + duration + ", fileLength=" + fileLength + ", flags=" + flags + ", recordParam=" + recordParam);
}

/**
 * Description:			拍照结果回调事件通知
 * param[userCode]:		用户ID（字符串），最大长度100字节
 * param[errorCode]:	错误码（数字）
 * param[fileName]:		生成的拍照全路径（字符串）
 * param[flags]:		拍照标记（数字）（保留）
 * param[snapshotParam]:拍照时指定的参数（字符串）
*/
function onYunSnapShotResult(userCode, errorCode, fileName, flags, snapshotParam) {
    if (errorCode == 0) {
        App.SnapshotFile = fileName;
        App.append_snapshot(Yun_GetWebServiceUrl(fileName));
    }
    console.log("OnYunEvent(SnapShotResult), userCode=" + userCode + ", errorCode=" + errorCode + ", fileName=" + fileName + ", flags=" + flags + ", snapshotParam=" + snapshotParam);    
}

/**
 * Description:			文件传输回调事件通知
 * param[handle]:		操作句柄（由 SendFile() 或 SendFile2Server() 产生）（数字）
 * param[errorCode]:	错误码（数字）
 * param[progress]:		传输进度(1~100)(数字)
 * param[fileName]:		传输完成保存的文件全路径（字符串）
 * param[fileLength]:	文件大小（数字）
 * param[flags]:		传输标记（数字）
*/
function onYunSendFileStatus(handle, errorCode, progress, fileName, fileLength, flags) {
    console.log("OnYunEvent(SendFileStatus), handle=" + handle + ", errorCode=" + errorCode + ", progress=" + progress + ", fileName=" + fileName +
        ", fileLength=" + fileLength + ", flags=" + flags);
    if (App.UploadingImage == handle) {
        if (100 == progress) {
            $("#image-progress").addClass("hide");
            $("#image-progress .progress-bar").html("0%").css("width", "0%");
            toastr.success("图片上传成功！");
            console.log(fileName);
        } else {
            $("#image-progress .progress-bar").html(progress + "%").css("width", progress + "%");
        }
    } else if (App.UploadingVideo == handle) {
        if (100 == progress) {
            $("#video-progress").addClass("hide");
            $("#video-progress .progress-bar").html("0%").css("width", "0%");
            toastr.success("视频上传成功！");
            console.log(fileName);
        } else {
            $("#video-progress .progress-bar").html(progress + "%").css("width", progress + "%");
        }
    }
}

/**
 * Description:			收到消息回调事件通知
 * param[userCode]:		用户ID（字符串），最大长度100字节
 * param[message]:		消息内容（字符串）
*/
function onYunReceiveMessage(userCode, message) {
    console.log("OnYunEvent(ReceiveMessage), userCode=" + userCode + ", message=" + message);
}

/**
 * Description:			文件媒体通知事件事件通知
 * param[handle]:		操作句柄，由( SetMediaSourceFile() 返回 )（数字）
 * param[eventType]:	事件类型（数字）
 * param[param]:		根据具体事件类型定义（数字）
 * param[strParam]:		根据具体事件类型定义（字符串）
*/
function onYunMediaSourceEvent(handle, eventType, param, strParam) {
    console.log("OnYunEvent(MediaSourceEvent), handle=" + handle + ", eventType=" + eventType + ", param=" + param + ", strParam=" + strParam);
}

/**
 * Description:			HTTP下载状态
 * param[guid]:		    与 HTTPDownload() 传入的GUID一致
 * param[errorcode]:	错误码
 * param[progress]:		下载进度，取值0~100 (仅当 iErrorCode 等于 0 时有意义)
 * param[fileName]:	    下载成功后，返回文件在本地的绝对路径
 * param[flags]:	    保留
*/
function onYunHTTPDownloadStatus(guid, errorcode, progress, fileName, flags) {
    console.log("OnYunEvent(HTTPDownloadStatus), guid=" + guid + ", errorcode=" + errorcode + ", progress=" + progress + ", fileName=" + fileName, ", flags=" + flags);
}


/****************************************************** 事件回调方法定义 END ******************************************************/
 